﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SingletonPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            /// 不要使用单例模式存取全局变量。这违背了单例模式的用意，最好放到对应类的静态成员中。
            /// 不要将数据库连接做成单例，因为一个系统可能会与数据库有多个连接，并且在有连接池的情况下，应当尽可能及时释放连接。Singleton模式由于使用静态成员存储类实例，所以可能会造成资源无法及时释放，带来问题。
            /// 
            // Constructor is protected -- cannot use new
            LazySingleton s1 = LazySingleton.Instance;
            LazySingleton s2 = LazySingleton.Instance;

            if (s1 == s2)
                Console.WriteLine("The same instance");
        }
    }
}
